
package co.edu.usbcali.dataaccess.api;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

import co.edu.usbcali.exceptions.PropertyException;

public class Conexion {

    private Connection con;
    private ResultSet rs;

    public Connection getCon() {
        return con;
    }

    public void setCon(Connection con) {
        this.con = con;
    }

    public ResultSet getRs() {
        return rs;
    }

    public void setRs(ResultSet rs) {
        this.rs = rs;
    }

    public Connection establecerConexion() {

        String ubicacion = getClass().getResource("/datos.properties").toString().replace("file:/", "");

        try {
            String clase = ObtenerPropiedades.getPropiedades(ubicacion, "clase");
            String url = ObtenerPropiedades.getPropiedades(ubicacion, "url");
            String usuario = ObtenerPropiedades.getPropiedades(ubicacion, "usuario");
            String contrasenia = ObtenerPropiedades.getPropiedades(ubicacion, "contrasenia");
            System.out.println("URL>>" + url);
            try {
                Class.forName(clase);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
            }

            setCon(DriverManager.getConnection(url, usuario, contrasenia));

        } catch (FileNotFoundException ex) {
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (PropertyException ex) {
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return getCon();
    }

    public void cerrarConexion() {
        if (getRs() != null) {
            try {
                getRs().close();
            } catch (SQLException ex) {
                Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (con != null) {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

}
